elif 语句
elif 语句示例
elif 是 else+if 的简写,一定要跟着 if 后面。它先否定前面的 if 条件,然后再加一个新的条件。
它的语法意义是为了减少使用嵌套结构,让代码更清晰。
以下两组代码是等价的。
score = int(input())
if score >= 60:
if score >= 90:
print(score, 'excellent')
else:
print(score, 'pass')
else:
print(score, 'fail')
score = int(input())
if score >= 90:
print(score, 'excellent')
elif score >= 60:
print(score, 'pass')
else:
print(score, 'fail')
选择结构
score = int(input())
if score >= 90:
print('excellent')
elif score >= 60:
print('pass')
else:
print('fail')
如果输入90,程序会输出?
如果输入80,程序会输出?
如果输入50,程序会输出?
对比
可以对比一下跟之前这道题的区别。
选择结构
score = int(input())
if score >= 90:
print('excellent',end=' ')
if score >= 60:
print('pass',end=' ')
else:
print('fail')
如果输入90,程序会输出?
如果输入50,程序会输出?
elif 语句一般形式
if {condition}:
{statement1}
{statement2}
……
elif:
{statement3}
{statement4}
……
elif……
else:
{statement5}
{statement6}
……
elif 并列存在
可以有多个 elif 并列存在。
可以没有 else
elif 后面可以没有 else。
score = int(input())
if score >= 90:
print(score, 'excellent')
elif score >= 60:
print(score, 'pass')
elif score >= 0:
print(score, 'fail')
选择结构
以下程序语法正确的是?
elif 的隐藏条件
elif 是 else+if 的组合,它首先是否定前面的 if 条件,形成一个自己的隐藏条件,然后再加一个新的条件。 例如elif score >= 80
其真实条件是否定if score >= 90
后得到score < 90
再加上score >= 80
,最终效果是if 80 <= score < 90
。所以在 score 输入 90 分时,虽然elif score >= 80
条件看似也成立,但是不会执行。
score = int(input())
if score >= 90:
print(score, 'excellent')
elif score >= 80: # 80 <= score <90
print(score, 'good')
elif score >= 60: # 60 <= score < 80
print(score, 'pass')
else: # score < 60
print(score, 'fail')
elif 与多个并列 if 的区别
如果把上面的示例代码改成多个并列 if 的结构,看似效果也差不多。但是运行后 score 输入 90 就会发现问题。
score = int(input())
if score >= 90:
print(score, 'excellent')
if score >= 80:
print(score, 'good')
if score >= 60:
print(score, 'pass')
if score >= 0:
print(score, 'fail')
错误
此时 excellent、good、pass 和 fail 都会输出,因为 score 是 90 时,这 4 个 if 条件都会成立。
选择结构
score = int(input())
if score >= 90:
print('excellent')
elif score >= 80:
print('good')
elif score >= 60:
print('pass')
else:
print('fail')
如果输入90,程序会输出?
如果输入80,程序会输出?
如果输入50,程序会输出?
选择结构
score = int(input())
if score >= 90:
print('excellent',end=' ')
if score >= 80:
print('good',end=' ')
if score >= 60:
print('pass',end=' ')
if score >= 0:
print('fail')
如果输入90,程序会输出?
如果输入50,程序会输出?
elif 的顺序
一个完整的 if-elif-else 语句中,只会执行最先成立的那个条件。例如以下代码中,如果 score 输入 80,只会输出 pass,而不会输出 good。因为一旦elif score >= 60
成立了,就会执行其下面的语句,而elif score >= 80
虽然也成立,但是不会再去判断和执行。示意图可参照上面的elif 流程图。所以要注意 elif 的排列顺序。
score = int(input())
if score >= 90:
print(score, 'excellent')
elif score >= 60:
print(score, 'pass')
elif score >= 80:
print(score, 'good')
else:
print(score, 'fail')